home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-04
/
zbpc_460.zip
/
GRAPHICS.EXE
/
HOUSE.BAS
< prev
next >
Wrap
BASIC Source File
|
1991-03-18
|
4KB
|
128 lines
REM >>>>>>>>>> 'HOUSE' DRAWS A 3'D HOUSE <<<<<<<<<<<<<<
MODE 7 ' Change to desired MODE for your video card
DEFDBL A-Z : DEFINT I,J,K : CLS
RH = 100 : D = 1000 : CX = 320 : CY = 550
FOR IR = 75 TO 150 STEP 25 : RH = IR
FOR IZ = 4 TO 11 STEP 2 : TH = IZ * .1
FOR IP = 5 TO 15 STEP 2 : RESTORE : PH = IP * .1 : CLS
PRINT @(0,0) "VIEW TH="; TH, "PH="; PH, "RH="; RH;
S1 = SIN(TH) : C1 = COS(TH)
S2 = SIN(PH) : C2 = COS(PH)
REM DATA FOR HOUSE
N% = 11 : GOSUB "VISIBLE LINE"
DATA -11,-20, 23, 6,-20, 9, 6,-20, 0
DATA 6, 32, 0, 0, 32, 0, 0, 32, 20
DATA 0, 0, 20, 0, 0, 13, 0, 32, 13
DATA 6, 32, 9, 6,-20, 9
N% = 2 : GOSUB "VISIBLE LINE"
DATA 6, 32, 0, 6, 32, 9
N% = 2 : GOSUB "VISIBLE LINE"
DATA 6, 0, 0, 6, 0, 9
N% = 3 : GOSUB "VISIBLE LINE"
DATA 0, 32, 0, 0, 0, 0, 6, 0, 0
N% = 5 : GOSUB "VISIBLE LINE"
DATA 0, 32, 0,-11.5,32, 0,-11.5,33.5,0
DATA-11.5,33.5,33 ,-11.5,32,33
GOSUB "HIDDEN LINE": PLOT XP,YP TO XQ,YQ
DATA -11.5,32,33, -11.5,32,0
DATA 0,32,20, -14,32,31.5
GOSUB "HIDDEN LINE 1"
DATA -14,0,31.5 ,-14,32,31.5
GOSUB "HIDDEN LINE": PLOT XP,YP TO XQ,YQ
DATA 0,0,20, -14,0,31.5
DATA -11,-20,23, -11,0,23
N% = 2 : GOSUB "VISIBLE LINE"
DATA -11.5,33.5,0, -16.5,33.5,0
N% = 2 : GOSUB "VISIBLE LINE"
DATA -11.5,33.5,33, -16.5,33.5,33
GOSUB "HIDDEN LINE": PLOT XP,YP TO XQ,YQ
DATA -16.5,33.5,0, -16.5,33.5,33
DATA -28,32,0, -16.5,32,0
GOSUB "HIDDEN LINE 1"
DATA -28,32,20, -14,32,33
N% = 2 : GOSUB "VISIBLE LINE"
DATA -28,32,20, -28,32,0
GOSUB "HIDDEN LINE"
DATA 6,-20,9, 6,32,9
DATA 0,0,0, 0,0,10
FOR I = 1 TO 5 : GOSUB "READ STUFF": GOSUB "WINDOWS": NEXT I
DATA 0,5,13.5, 0,14,13.5, 0,23,13.5
DATA 0,14,2, 0,23,2
FOR I = 1 TO 2 : GOSUB "READ STUFF": GOSUB "GARAGE DOOR": NEXT I
DATA 6,-11,0, 6,-1.5,0
N% = 4 : GOSUB "VISIBLE LINE"
DATA 0,6,0, 0,6,6.5
DATA 0,9,6.5, 0,9,0
TRON X
NEXT IP
NEXT IZ
NEXT IR
END
"PERSPECTIVE"
REM PERSPECTIVE PROGECTION
GOSUB "READ STUFF": REM READ X,Y,Z
"PERSPECTIVE 1"
XE = 0 - X * S1 + Y * C1
YE = 0 - X * C1 * C2 - Y * S1 * C2 + Z * S2
ZE = 0 - X * S2 * C1 - Y * S2 * S1 - Z * C2 + RH
SX% = D * XE / ZE + CX
SY% = CY - D * YE / ZE
RETURN
"HIDDEN LINE"
REM HIDDEN LINE ROUTINE
GOSUB "PERSPECTIVE": XP = SX% : YP = SY%
GOSUB "PERSPECTIVE": XQ = SX% : YQ = SY%
"HIDDEN LINE 1"
GOSUB "PERSPECTIVE": XV = SX% : YV = SY%
GOSUB "PERSPECTIVE": XH = SX% : YH = SY%
V1 = (XH - XV) * .5 : V2 = (YH - YV) * .5
U1 = XP - XQ : U2 = YP - YQ
XT = XV + V1 : YT = YV + V2
FOR I = 2 TO 7
VI = SGN(0. + (U2 * (XV - XQ) - U1 * (YV - YQ)) * (U2 * (XT - XQ) - U1 * (YT - YQ)))
V1 = V1 * .5 : V2 = V2 *.5
XT = XT + VI * V1 : YT = YT + VI * V2
NEXT
PLOT XV,YV TO XT,YT
RETURN
"VISIBLE LINE"
REM VISABLE LINE ROUTINE
FOR I = 1 TO N%
GOSUB "PERSPECTIVE"
IF I = 1 THEN PLOT SX%, SY%
PLOT TO SX%, SY%
NEXT I
RETURN
"WINDOWS"
REM WINDOWS SUBROUTINE
GOSUB "PERSPECTIVE 1": PLOT SX%, SY%
Y = Y + 4 : GOSUB "PERSPECTIVE 1": PLOT TO SX%, SY%
Z = Z + 5.5:GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
Y = Y - 4 : GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
Z = Z - 5.5:GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
Y = Y + 2 : GOSUB "PERSPECTIVE 1": PLOT SX%,SY%
Z = Z + 5.5:GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
Y = Y - 2 : Z = Z - 2.75 : GOSUB "PERSPECTIVE 1": PLOT SX%,SY%
Y = Y + 4 : GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
RETURN
"GARAGE DOOR" REM GARAGE DOOR ROUTINE
GOSUB "PERSPECTIVE 1": PLOT SX%,SY%
Z = Z + 7 : GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
Y = Y - 7.5:GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
Z = Z - 7 : GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
Z = Z + 5 : Y = Y + 1 : GOSUB "PERSPECTIVE 1": PLOT SX%,SY%
Z = Z + 1 : GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
Y = Y + 5.5:GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
Z = Z - 1 : GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
Y = Y - 5.5:GOSUB "PERSPECTIVE 1": PLOT TO SX%,SY%
RETURN
"READ STUFF"
READ X,Y,Z
RETURN